#include "exit.h"

void IRAM_ATTR exit_isr_handle(void* args)
{
    uint32_t gpio_pin=(uint32_t)args;
    if(gpio_pin==BOOT_EXIT_GPIO_PIN)
    {
        esp_rom_delay_us(20000);
        if(BOOT_EXIT_VALUE==BOOT_EXIT_PRES)
        {
            LED_TOGGLE();   
        }
    }
}

void exit_init(void)
{
    gpio_config_t exit_init_struct;
    exit_init_struct.pin_bit_mask=1ULL<<BOOT_EXIT_GPIO_PIN;
    exit_init_struct.mode=GPIO_MODE_INPUT;
    exit_init_struct.intr_type=GPIO_INTR_NEGEDGE;
    exit_init_struct.pull_up_en=GPIO_PULLUP_ENABLE;
    exit_init_struct.pull_down_en=GPIO_PULLDOWN_DISABLE;

    gpio_config(&exit_init_struct);

    gpio_install_isr_service(ESP_INTR_FLAG_EDGE);
    gpio_isr_handler_add(BOOT_EXIT_GPIO_PIN,exit_isr_handle,BOOT_EXIT_GPIO_PIN);
    gpio_intr_enable(BOOT_EXIT_GPIO_PIN);
}